package com.paishen.libamap.poisearch;

import android.content.Context;

import com.amap.api.location.AMapLocation;
import com.amap.api.location.AMapLocationClient;
import com.amap.api.location.AMapLocationClientOption;
import com.amap.api.location.AMapLocationListener;
import com.amap.api.maps2d.AMapUtils;
import com.amap.api.maps2d.model.LatLng;

/**
 * Created by peng on 2016/01/07.
 */
public class AMapUtil {

    public static final void asyncLoc(Context context, final AMapLocationListener callback) {
        final AMapLocationClient locationClient = new AMapLocationClient(context.getApplicationContext());
        AMapLocationClientOption locationOption = new AMapLocationClientOption();
        // 设置定位模式为高精度模式
        locationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy);
        // 设置是否需要显示地址信息
        locationOption.setNeedAddress(true);
        /**
         * 设置是否优先返回GPS定位结果，如果30秒内GPS没有返回定位结果则进行网络定位
         * 注意：只有在高精度模式下的单次定位有效，其他方式无效
         */
        locationOption.setGpsFirst(false);
        locationOption.setOnceLocation(true);
        // 设置定位监听
        locationClient.setLocationListener(new AMapLocationListener() {
            @Override
            public void onLocationChanged(AMapLocation aMapLocation) {
                // 停止定位
                locationClient.stopLocation();
                /**
                 * 如果AMapLocationClient是在当前Activity实例化的，
                 * 在Activity的onDestroy中一定要执行AMapLocationClient的onDestroy
                 */
                // locationClient.onDestroy();

                if (callback != null) callback.onLocationChanged(aMapLocation);
            }
        });
        // 设置定位参数
        locationClient.setLocationOption(locationOption);
        // 启动定位
        locationClient.startLocation();
    }

    /***
     * 根据用户的起点和终点经纬度计算两点间距离，此距离为相对较短的距离，单位米。
     */
//    public static float calcDistance(double startLat, double startLng, double endLat, double endLng) {
//        LatLng startLatlng = new LatLng(startLat, startLng);
//        LatLng endLatlng = new LatLng(endLat, endLng);
//        // 计算量坐标点距离
//        return AMapUtils.calculateLineDistance(startLatlng, endLatlng);
//    }
}
